﻿using System;
using System.Collections.Generic;
using System.Text;

using ECCIT;
using OgilvyOne.UKNow.Model;
using OgilvyOne.UKNow.Utility;
using System.Data;


namespace OgilvyOne.UKNow.IDAL
{
    public interface IDALNews
    {
        
        #region 获取数据接口
        /// <summary>
        ///     根据新闻ID获取新闻对象
        /// </summary>
        /// <param name="id">新闻ID</param>
        /// <returns>如果存在，返回NewsModel，如果不存在，返回null</returns>
        NewsModel GetNewsModelByID(int? id);
        
        /// <summary>
        ///     获取新闻所有数据，默认根据最后修改时间倒排序
        /// </summary>
        /// <returns></returns>
        IList<NewsModel> GetAllNewsModels();

        /// <summary>
        ///     获取所有已发布新闻数据，默认根据最后修改时间倒排序
        /// </summary>
        /// <returns></returns>
        IList<NewsModel> GetPublishedNewsModels();

        /*修改人：穆凤凤
        * 修改时间：2012-03-13
        * 修改内容：
        *      新增接口 获得按新闻标题或发布状态查找出来的活动新闻实体 GetNewsModelByTittle
        *      有mff注释的为本次修改的代码
        */
        //mff
        /// <summary>
        ///     获取按新闻标题搜索出来的新闻数据
        /// </summary>
        /// <returns></returns>
        IList<NewsModel> GetNewsModelByTittle(string newTittle, int? state);
        //mff

        /// <summary>
        /// news列表分页
        /// </summary>
        /// <param name="pagingParams">分页参数</param>
        /// <returns>返回PagingList</returns>
        PagingList GetAllNewsByPaging(PagingParameter pagingParams);
        #endregion

        #region 操作数据接口
        /// <summary>
        ///     保存新闻数据
        /// </summary>
        /// <param name="modelInfo">新闻数据对象</param>
        /// <returns>
        ///     通过判断ResultInfo.Result为true还是false获取保存是否成功
        ///     如果ResultInfo.Result为true，可以通过ResultInfo.ReturnedObject获取modelInfo
        ///     如果ResultInfo.Result为false，可以通过ResultInfo.Message获取错误提示，通过ResultInfo.Exception获取异常信息
        /// </returns>
        ResultInfo Save(NewsModel modelInfo);
        
        /// <summary>
        ///     根据新闻数据ID列表删除新闻数据
        /// </summary>
        /// <param name="idList">新闻ID列表</param>
        /// <returns>
        ///     通过判断ResultInfo.Result为true还是false获取删除是否成功
        ///     如果ResultInfo.Result为false，可以通过ResultInfo.Message获取错误提示，通过ResultInfo.Exception获取异常信息
        /// </returns>
        ResultInfo Delete(IList<int?> idList);

        /// <summary>
        ///     根据新闻id列表将新闻置为热点新闻
        /// </summary>
        /// <param name="idList">新闻ID列表</param>
        /// <returns></returns>
        ResultInfo SetHotspot(IList<int?> idList);

        /// <summary>
        ///     根据新闻id列表将新闻置为已发布状态
        /// </summary>
        /// <param name="idList">新闻ID列表</param>
        /// <returns></returns>
        ResultInfo Publish(IList<int?> idList);

        /// <summary>
        ///     根据新闻id列表将新闻置为未发布状态
        /// </summary>
        /// <param name="idList">新闻ID列表</param>
        /// <returns></returns>
        ResultInfo UnPublish(IList<int?> idList);

        DataTable GetAllList();

        #endregion

        /// <summary>
        /// 取新闻的图片
        /// </summary>
        /// <param name="nid"></param>
        /// <returns></returns>
        IList<PhoneImage> GetNewsPhone(int? nid);
    }
}
